package generic;

/**
 * @author ChangLiang
 * @date 2021/2/1
 */
public class Erased<T> {
    private final int SIZE = 100;

    public static void f(Object arg) {

        /*
        if (arg instanceof T) {
        }          // Error
        */

        /*
        T var = new T();                 // Error
        */
        /**
         * 在Erased.java中对创建一个new T()的尝试将无法实现，部分原因是因为擦除，而另一部分
         * 原因是因为编译器不能验证T具有默认（无参）构造器
         *
         * Java中的解决方案是传递一个工厂对象，并使用它来创建新的实例。
         * 最便利的工厂对象就是Class对象，因此如果使用类型标签，那么你就可以使用newInstance来创建这个类型的新对象
         */


        /*
        T[] array = new T[SIZE];         // Error
        */

        /*
        T[] array = (T) new Object[SIZE]; // Unchecked warning
        */
    }
}
